home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_guile.idb / usr / freeware / share / aclocal / qthreads.m4.z / qthreads.m4
Encoding:
M4 Source File  |  1999-04-16  |  5.7 KB  |  164 lines

  1. dnl   Autoconf macros for configuring the QuickThreads package
  2. dnl   Jim Blandy <jimb@red-bean.com> --- July 1998
  3. dnl
  4. dnl      Copyright (C) 1998 Free Software Foundation, Inc.
  5. dnl
  6. dnl   This file is part of GUILE.
  7. dnl   
  8. dnl   GUILE is free software; you can redistribute it and/or modify
  9. dnl   it under the terms of the GNU General Public License as
  10. dnl   published by the Free Software Foundation; either version 2, or
  11. dnl   (at your option) any later version.
  12. dnl   
  13. dnl   GUILE is distributed in the hope that it will be useful, but
  14. dnl   WITHOUT ANY WARRANTY; without even the implied warranty of
  15. dnl   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. dnl   GNU General Public License for more details.
  17. dnl   
  18. dnl   You should have received a copy of the GNU General Public
  19. dnl   License along with GUILE; see the file COPYING.  If not, write
  20. dnl   to the Free Software Foundation, Inc., 59 Temple Place, Suite
  21. dnl   330, Boston, MA 02111-1307 USA
  22.  
  23.  
  24.  
  25. dnl   QTHREADS_CONFIGURE configures the QuickThreads package.  The QT
  26. dnl   sources should be in $srcdir/qt.  If configuration succeeds, this
  27. dnl   macro creates the appropriate symlinks in the qt object directory,
  28. dnl   and sets the following variables, used in building libqthreads.a:
  29. dnl      QTHREAD_LTLIBS --- set to libqthreads.la if configuration
  30. dnl         succeeds, or the empty string if configuration fails.
  31. dnl      qtmd_h, qtmds_s, qtmdc_c, qtdmdb_s --- the names of the machine-
  32. dnl         dependent source files.
  33. dnl      qthread_asflags --- flags to pass to the compiler when processing
  34. dnl         assembly-language files.
  35. dnl
  36. dnl   It also sets the following variables, which describe how clients
  37. dnl   can link against libqthreads.a:
  38. dnl      THREAD_PACKAGE --- set to "QT" if configuration succeeds, or
  39. dnl         the empty string if configuration fails.
  40. dnl     THREAD_CPPFLAGS --- set to `-I' flags for thread header files
  41. dnl     THREAD_LIBS_LOCAL --- linker options for use in this source tree
  42. dnl     THREAD_LIBS_INSTALLED --- linker options for use after this package
  43. dnl        is installed
  44. dnl   It would be nice if all thread configuration packages for Guile
  45. dnl   followed the same conventions.
  46. dnl
  47. dnl   All of the above variables will be substituted into Makefiles in
  48. dnl   the usual autoconf fashion.
  49. dnl
  50. dnl   We distinguish between THREAD_LIBS_LOCAL and
  51. dnl   THREAD_LIBS_INSTALLED because the thread library might be in
  52. dnl   this tree, and be built using libtool.  This means that:
  53. dnl     1) when building other executables in this tree, one must
  54. dnl        pass the relative path to the ../libfoo.la file, but 
  55. dnl     2) once the whole package has been installed, users should
  56. dnl        link using -lfoo. 
  57. dnl   Normally, we only care about the first case, but since the
  58. dnl   guile-config script needs to give users all the flags they need
  59. dnl   to link programs against guile, the GUILE_WITH_THREADS macro
  60. dnl   needs to supply the second piece of information as well.
  61. dnl
  62. dnl   This whole thing is a little confused about what ought to be
  63. dnl   done in the top-level configure script, and what ought to be
  64. dnl   taken care of in the subdirectory.  For example, qtmds_s and
  65. dnl   friends really ought not to be even mentioned in the top-level
  66. dnl   configure script, but here they are.
  67.  
  68. AC_DEFUN([QTHREADS_CONFIGURE],[
  69.   AC_REQUIRE([AC_PROG_LN_S])
  70.  
  71.   AC_MSG_CHECKING(QuickThreads configuration)
  72.   # How can we refer to the qt source directory from within the qt build
  73.   # directory?  For headers, we can rely on the fact that the qt src
  74.   # directory appears in the #include path.
  75.   qtsrcdir="`(cd $srcdir; pwd)`/qt"
  76.  
  77.   changequote(,)dnl We use [ and ] in a regexp in the case
  78.  
  79.   THREAD_PACKAGE=QT
  80.   qthread_asflags=''
  81.   case "$host" in
  82.     i[3456]86-*-*)
  83.       port_name=i386
  84.       qtmd_h=md/i386.h
  85.       qtmds_s=md/i386.s
  86.       qtmdc_c=md/null.c 
  87.       qtdmdb_s=
  88.       case "$host" in
  89.         *-*-netbsd* )
  90.           ## NetBSD needs to be told to pass the assembly code through
  91.           ## the C preprocessor.  Other GCC installations seem to do
  92.           ## this by default, but NetBSD's doesn't.  We could get the
  93.           ## same effect by giving the file a name ending with .S
  94.           ## instead of .s, but I don't see how to tell automake to do
  95.           ## that.
  96.           qthread_asflags='-x assembler-with-cpp'
  97.         ;;
  98.       esac
  99.       ;;
  100.     mips-sgi-irix[56]*)
  101.       port_name=irix
  102.       qtmd_h=md/mips.h
  103.       qtmds_s=md/mips-irix5.s
  104.       qtmdc_c=md/null.c
  105.       qtdmdb_s=md/mips_b.s 
  106.       ;;
  107.     mips-*-*)
  108.       port_name=mips
  109.       qtmd_h=md/mips.h
  110.       qtmds_s=md/mips.s
  111.       qtmdc_c=md/null.c
  112.       qtdmdb_s=md/mips_b.s 
  113.       ;;
  114.     sparc-*-sunos*)
  115.       port_name=sparc-sunos
  116.       qtmd_h=md/sparc.h
  117.       qtmds_s=md/_sparc.s
  118.       qtmdc_c=md/null.c
  119.       qtdmdb_s=md/_sparc_b.s 
  120.       ;;
  121.     sparc-*-*)
  122.       port_name=sparc
  123.       qtmd_h=md/sparc.h
  124.       qtmds_s=md/sparc.s
  125.       qtmdc_c=md/null.c
  126.       qtdmdb_s=md/sparc_b.s 
  127.       ;;
  128.     alpha-*-*)
  129.       port_name=alpha
  130.       qtmd_h=md/axp.h
  131.       qtmds_s=md/axp.s
  132.       qtmdc_c=md/null.c
  133.       qtdmdb_s=md/axp_b.s 
  134.       ;;
  135.     *)
  136.       echo "Unknown configuration; threads package disabled"
  137.       THREAD_PACKAGE=""
  138.       ;;
  139.   esac
  140.   changequote([, ])
  141.  
  142.   # Did configuration succeed?
  143.   if test -n "$THREAD_PACKAGE"; then
  144.     AC_MSG_RESULT($port_name)
  145.     QTHREAD_LTLIBS=libqthreads.la
  146.     THREAD_CPPFLAGS="-I$qtsrcdir -I../qt"
  147.     THREAD_LIBS_LOCAL="../qt/libqthreads.la"
  148.     THREAD_LIBS_INSTALLED="-lqthreads"
  149.   else
  150.     AC_MSG_RESULT(none; disabled)
  151.   fi
  152.  
  153.   AC_SUBST(QTHREAD_LTLIBS)
  154.   AC_SUBST(qtmd_h)
  155.   AC_SUBST(qtmds_s)
  156.   AC_SUBST(qtmdc_c)
  157.   AC_SUBST(qtdmdb_s)
  158.   AC_SUBST(qthread_asflags)
  159.   AC_SUBST(THREAD_PACKAGE)
  160.   AC_SUBST(THREAD_CPPFLAGS)
  161.   AC_SUBST(THREAD_LIBS_LOCAL)
  162.   AC_SUBST(THREAD_LIBS_INSTALLED)
  163. ])
  164.